package com.lge.clock.worldclock.map;

import java.util.Vector;

import javax.microedition.khronos.opengles.GL10;

/**
 * @author lge.com
 */
public class ShapeGroup extends Shape {
    private Vector<Shape> children = new Vector<Shape>();
    
    public ShapeGroup() {
    }
    
    @Override
    public void draw(GL10 gl) {
		if (isTranslateProcess() || isRotateProcess() || isScaleProcess()) {
			gl.glLoadIdentity();
			
            if (isTranslateProcess()) doTranslatef(gl);
            
            if (isRotateProcess()) doRotatef(gl);
            
            doInitRotate(gl);
            
            if (isScaleProcess()) doScalef(gl);
		}
    	
        int count = children.size();
		for(int i = 0 ; i < count; i++) {
			Shape child = children.get(i);
            child.draw(gl);
		}
    }
    
//    @Override
//    public void setRotate(float rx, float ry, float rz) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setRotate(rx, ry, rz);
//		}
//    }
//    
//    @Override
//    public void setRotateProcess(boolean isRotate) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setRotateProcess(isRotate);
//		}
//    }
//    
//    @Override
//    public void setAppendRotate(float rx, float ry, float rz) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setAppendRotate(rx, ry, rz);
//		}
//    }
//    
//    @Override
//    public void setTranslate(float x, float y, float z) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setTranslate(x, y, z);
//		}
//    }
//    
//    @Override
//    public void setTranslateProcess(boolean isTranslate) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setTranslateProcess(isTranslate);
//		}
//    }
//    
//    @Override
//    public void setAppendTranslate(float x, float y, float z) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setAppendTranslate(x, y, z);
//		}
//    }
//    
//    @Override
//    public void setScale(float size) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setScale(size);
//		}
//    }
//    
//    @Override
//    public void setScaleProcess(boolean isScale) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setScaleProcess(isScale);
//		}
//    }
//    
//    @Override
//    public void setAppendScale(float size) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setAppendScale(size);
//		}
//    }
//    
//    @Override
//    public void setRoateLimit(int coordinate, float min, float max) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setRoateLimit(coordinate, min, max);
//		}
//    }
//    
//    @Override
//    public void setScaleLimit(float min, float max) {
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setScaleLimit(min, max);
//		}
//    }
//    
//    @Override
//    public void setInitRotate(float x, float y, float z) {
//    	super.setInitRotate(x, y, z);
//    	
//    	int count = children.size();
//		for( int i = 0; i < count; i++) {
//			Shape child = children.get(i);
//            child.setInitRotate(x, y, z);
//		}
//    }
    
    @Override
    public void setRenderMode(int mode) {
        super.setRenderMode(mode);
        
        int count = children.size();
        for( int i = 0; i < count; i++) {
            Shape child = children.get(i);
            child.setRenderMode(mode);
        }
    }
    
    public float getRotateX() {
    	return mRotateX;
//    	if (children.size() > 0) {
//    	    Shape child = children.get(0);
//    	    
//    		return child.mRotateX;
//    	}
//    	
//    	return 0.0f;
    }
    
    public float getRotateY() {
    	return mRotateY;
//    	if (children.size() > 0) {
//    	    Shape child = children.get(0);
//    	    
//    		return child.mRotateY;
//    	}
//    	
//    	return 0.0f;
    }
    
    public float getRotateZ() {
    	return mRotateZ;
//    	if (children.size() > 0) {
//    	    Shape child = children.get(0);
//    	    
//    		return child.mRotateZ;
//    	}
//    	
//    	return 0.0f;
    }
    
//    public float getScale() {
//    	if (children.size() > 0) {
//    	    Shape child = children.get(0);
//    	    
//    		return child.getScale();
//    	}
//    	
//    	return 1.0f;
//    }
    
    public void add(int location, Shape object) {
        children.add(location, object);
    }
 
    public boolean add(Shape object) {
        return children.add(object);
    }
 
    public void clear() {
        children.clear();
    }
 
    public Shape get(int location) {
        return children.get(location);
    }
 
    public Shape remove(int location) {
        return children.remove(location);
    }
 
    public boolean remove(Object object) {
        return children.remove(object);
    }
 
    public int size() {
        return children.size();
    }
}